package com.csun.cmny.provider.service;

import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.DmcWatchData;
import com.csun.cmny.provider.model.dto.watch.WatchHeartQueryDto;
import com.csun.cmny.provider.model.dto.watch.WatchSleepQueryDto;
import com.csun.cmny.provider.model.dto.watch.WatchStepQueryDto;
import com.csun.cmny.provider.model.vo.WatchOldmanAddressVo;
import com.csun.cmny.provider.model.vo.watch.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-01-17 16:15
 * @Description: the interface dmc watch data service
 */
public interface DmcWatchDataService extends IService<DmcWatchData> {

    /**
     * query real watch data by device id
     *
     * @param deviceId  device id
     *
     * @return  the dmc watch data
     */
    DmcWatchData queryRealWatchDataByDeviceId(Long deviceId);

    /**
     * init dmc watch data
     *
     * @param deviceId  device id
     *
     * @return the int.
     */
    Integer initDmcWatchData(Long deviceId);

    /**
     * remove dmc watch data
     *
     * @param deviceId  device id
     *
     * @return  the int.
     */
    Integer removeDmcWatchData(Long deviceId);

    /**
     * show watch data by device id
     *
     * @param deviceId  device id
     *
     * @return  the dmc watch data vo
     */
    DmcWatchDataVo showDataByDeviceId(Long deviceId);

    /**
     * get current watch location by device id
     *
     * @param deviceId  device id
     *
     * @return  the current watch location vo
     */
    WatchCurrentLocationVo getCurrentWatchLocationByDeviceId(Long deviceId);

    /**
     * get watch data by device id
     *
     * @param deviceId  device id
     *
     * @return  dmc watch data vo
     */
    DmcWatchDataVo getWatchDataByDeviceId(Long deviceId);

    /**
     * query watch oldman address by oldman id list
     *
     * @param oldmanIds oldman id list
     *
     * @return  the list watch oldman address vo
     */
    List<WatchOldmanAddressVo> queryWatchOldmanAddressByOldmanIds(List<Integer> oldmanIds);

    /**
     * @description: TODO
     * @param: oldmanId 老人ID
     * @return: 老人设备最新一次数据
     * @throws
     * @author huangxm
     * @date 2019/3/15 11:58
     */
    Map<String,Object> getRecentData(@Param("oldmanId")Integer oldmanId);
}
